package szxy.base.day08;
/*
    问题1：
        我们按照之前的方式创建类，以及根据类创建对象，然后对该对象的成员变量赋值，是没有问题的
        但是，我们也可以赋值一个不合逻辑的年龄1800，这个值在java程序中是没有任何问题，因为是符合int类型的范围
        但是拿到现实生活中，没有人可以存活1800岁，是不合理的
        我们想着的是，在对年龄进行赋值的时候，应该加一个判断，如果我们的年龄是0 - 120岁之间的，才能赋值，否则应该给一个提示。
        这个判断应该是比较复杂的，不可能是一句话就能搞定的，所以在哪加比较合理？
        我们可以将设置年龄的逻辑，封装成一个方法，在方法里面编写判断年龄的逻辑，然后将来对年龄进行赋值的时候，使用该方法进行赋值就可以了。

    问题2：
        我们按照上面问题1的解决方案，编写了一个方法，确实可以调用该方法进行赋值的时候进行判断，但是，原本的赋值方式依旧是可以使用的。
        我们应该就只提供方法进行赋值才对，原本的直接取成员变量赋值的方式应该是不准用了才对。
        java针对这样的情况，提供了一个关键字：private 私有的，可以成员变量，成员方法，构造方法

 */
class Person{
    //成员变量
    String name;
    //int age;
    private int age;

    //定义一个公共的方法，将成员变量返回出去
    public int getAge(){
        return age;
    }

    public void setAge(int i){
        //在这里加判断
        if(i>=0 && i<=20){
            age=i;
        }else{
            System.out.println("您给定的年龄有误！默认18岁！");
            age=18;
        }
    }

    //成员方法
    public void eat(){
        System.out.println("吃饭");
    }
    public void sleep(){
        System.out.println("睡觉");
    }
}



public class PersonDemo {
    public static void main(String[] args) {
        Person s1=new Person();
        s1.name="zmm";
        //s1.age=1800;    //在B类中无法访问A类中的私有成员
        s1.setAge(1800);
        System.out.println("姓名："+s1.name+"，年龄："+s1.getAge());
    }


}
